A computer network includes computer processors or “hosts” that host software applications that provide or request services, or both. The hosts may be network terminals or end stations that do not perform network traffic routing or forwarding functions. The hosts communicate with each other through network devices, such as switches and routers, sometimes called intermediate devices, which do perform routing and forwarding functions. When a host is added to a network by connecting directly to another host, or indirectly to another host through one or more intermediate devices, the host must be configured for network operations. For example, the newly added host is assigned a logical network address for itself, and a network address for the intermediate device that routes or forwards its traffic, among other configuration information.
Computer networks that employ the Transmission Control Protocol and Internet Protocol (TCP/IP) for sending packets of information between devices on the network are proliferating, and as a result, logical network addresses that are used to locate each device on the network have become scarce. Further, in many local networks with many different computers, the number and location of the computers connected to the network may change regularly. In addition, of the many computers physically connected at one time, only a fraction of the computers are on and operating at one time. Thus one or more hosts are being added and dropped frequently.
A specific context in which this problem arises involves large-scale cable modem networks in which voice and other services are delivered over an Internet Protocol network that uses coaxial cable for communications. In this context, cable modems of end users become active and inactive regularly as users initiate and terminate use of service. In this context, it is wasteful to give every computer a unique and permanent network address. A number of addresses sufficient for the simultaneously operating computers can be shared and re-assigned as one host drops off the network and another host adds onto the network. Configuring each host is a tedious process to perform manually.
The Dynamic Host Configuration Protocol (DHCP) provides a mechanism through which computers using TCP/IP can obtain network addresses and other configuration information automatically. DHCP is an open standard protocol for dynamic host configuration described in request for comments (RFC) documents numbered 2131 and 2132 available at the time of this writing as rfc2131.html and rfc2132.html, respectively, on the World Wide Web (www) at domain ietf.org. A DHCP server process operates on a DHCP server host that is conveniently located for several hosts on one or more local networks. One or more DHCP server hosts and processes are set up by a system administrator with information to configure the hosts on one or more local networks to reflect the current architecture of those local networks. A DHCP client process operates on each host of the local networks. As used hereinafter, a server refers to the server process and a client refers to the client process unless otherwise indicated to refer to the host or device on which the process executes.
Multiple DHCP servers may serve the same network or portion of the network. The IP addresses available for each network or portion of the network are distributed among the DHCP servers and placed in a data structure at each DHCP, thus forming a pool of addresses that the individual DHCP server may allocate. In conventional systems, a network administrator divides a set or range of network addresses among multiple DHCP servers to reflect the current architecture of the network. Many thousands and even millions of network addresses might be stored in the address pools of the multiple DHCP servers. It is an extremely tedious and error-prone process to manually apportion thousands of network addresses among the address pools of dozens or hundreds of DHCP servers.
One approach to simplify the manual process is to specify a set of contiguous network addresses for a DHCP server as a subnet. A subnet is a base address and a range of addresses above the base address, and therefore is simpler to enter manually as compared to listing each address individually. An IP address consists of 32 bits, often represented as four 8-bit numbers separated by periods, e.g., A.B.C.D, where the letters A, B, C, and D each represent one 8-bit number. An 8-bit number can represent values from 0 though 255. In a range of contiguous addresses the leftmost bits are constant and the rightmost change. For example, in a range of network addresses from 20.17.123.000 to 20.17.123.255 the three 8-bit numbers on the left are constant, i.e., the 24 leftmost bits are constant. The leftmost bits that do not change in the range of addresses associated with a particular subnet are withheld or “masked” from processes that operate only on addresses in the subnet. A virtual mask is laid over the leftmost bits. Routers may use the masked portion of the address to direct traffic to physical segments of the network. The number of bits in the mask is the size of the mask. The size of the mask is an indicator of the range in the subnet because the remaining bits are allowed to change within the subnet. For example, the mask of size 24 bits implies a range of 8 bits, from 0-255, for the subnet. The subnet always begins at an address with all zeroes in the unmasked portion.
Several problems occur even with specifying addresses in subnets. First, the apportionment among multiple DHCP servers is still manual, and therefore tedious and error-prone where there are many DHCP servers and many subnets. Second, even if values are entered correctly, the apportionment may not be optimal for the actual distribution of hosts on the network. One DHCP server may be apportioned too large a subnet or too many subnets for the number of hosts that use the portion of the network the DHCP server serves, while another DHCP server may be apportioned too small or too few subnets. When a shortage of addresses arises at one DHCP server, the network administrator manually determines a DHCP server with excess addresses and moves at least some of the excess addresses, perhaps in one or more subnets, to the DHCP server experiencing a shortage. Alternatively the database administrator manually requests additional subnets from a higher authority.
In one approach, a dynamic subnet configuration server (DSC server) is introduced to give out subnets to DHCP servers as requested by the DHCP servers. However, this does not eliminate the problems of conventional DHCP servers. A problem with the DSC server approach is that an administrator must still apportion subnets among the DSC servers if there are multiple DSC servers. Also, DSC servers cannot automatically request additional subnets when all its subnets have been dispersed.
Another problem is that the DSC server does not consider the relative needs of DHCP servers requesting the subnets. For example, two DHCP servers may request renewal of their subnets of mask size 24 bits, yet one of the requesting DHCP servers may be using 45% of the addresses in the subnets while the other is using 90%. If network addresses are scarce, it is more desirable to apportion a smaller subnet (e.g., with a larger mask size) to the first DHCP server than to the second. For example, it is desirable to renew the DHCP server that is making 45% use of its addresses with a subnet of mask size 25 while providing the full subnet of mask size 24 to the DHCP server making use of 90% of its addresses.
Based on the foregoing, there is a clear need for techniques that allow an administrator to enter all available subnets at one location.
There is also a need for techniques that automatically apportion subnets among multiple DHCP servers.
There is also a need for techniques that consider relative usage of the subnets by the DHCP servers while apportioning.